﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Core.Module.Interfaces.Model;

namespace Core.Module.Interfaces.Manager
{
    public interface INodeManager<T>
    {
        IModuleNode Get(int nodeid);
        IModuleNode GetChild(int parentId, string nodeTypeName);
        IModuleNode GetChild(IModuleNode parent, string nodeTypeName);
        
        IEnumerable<IModuleNode> GetChildren(int parentId);
        IEnumerable<IModuleNode> GetChildren(int parentId, string nodeTypeName);
        

        object GetPropertyValue(IModuleNode node, string propertyName);
        IModuleNode GetPropertyAsNode(IModuleNode node, string propertyName);

        IEnumerable<KeyValuePair<string, string>> GetProperties(IModuleNode node);
    }
}
